package com.learn.controller;

import cn.hutool.core.lang.UUID;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 文件上传控制器
 * 处理文件上传相关请求
 */
@RestController
@CrossOrigin
public class UpLoadController {

    /**
     * 上传文件
     *
     * @param file 待上传的文件
     * @return 文件的访问URL
     */
    @PostMapping("/upload")
    public String upload(@RequestPart("file") MultipartFile file) {
        // 获取文件名
        String fileName = file.getOriginalFilename();

        // 获取文件扩展名
        String suffixName = null;
        if (fileName != null) {
            suffixName = fileName.substring(fileName.lastIndexOf("."));
        }

        // 生成新的文件名，防止文件覆盖
        fileName = UUID.randomUUID() + suffixName;
        try {
            // 获取资源路径
            String path = ResourceUtils.getURL("classpath:").getPath() + "static/";
            // 将文件保存到指定路径
            file.transferTo(new File(path + fileName));
        } catch (IOException e) {
            // 异常处理：抛出运行时异常
            throw new RuntimeException(e);
        }

        // 返回文件访问路径
        return "http://localhost:8080/" + fileName;
    }
    /**
     * 上传文件
     *
     * @param file 待上传的文件
     * @return 文件的访问URL
     */
    @PostMapping("/uploads")
    public List<String> uploads(@RequestPart("file") MultipartFile[] file) {
        ArrayList<String> images = new ArrayList<>();
        for (MultipartFile multipartFile : file) {
            String upload = upload(multipartFile);
            images.add(upload);
        }
        return images;
    }
}
